查看原文
其他

留下想要的变量,你会几种方法?

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:孙一博,中南财经政法大学金融学院

本文编辑:魏若芙

技术总编:戴   雯

Stata&Python云端课程来啦!

      为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

引言

很多小伙伴在日常处理数据的时候,都和小编一样,有时会遇到这种情况:有很多个文件,需要保留部分变量,而变量名又各不相同,但是要保留的变量恰好都是每一个数据中特定列的变量。例如:如何在不知道变量名的情况下,保留图中一个数据中的第2、第3和第6个变量?

接下来,小编就以Stata自带的数据为例,用三种方法来保留nlsw88.dta中的第2、第3和第6个变量。看下面这张图,最开始的数据呈现为这样,我们的目的是保留下age、race与grade这三个变量,来一起看看能想出几种方法吧!

一、split命令第一步,使用ds命令拿出nlsw88.dta数据中所有的变量名称,并且将这些变量的名称保存在返回值“r(varlist)”中。实际操作中,使用findname或varsearch也可以达到同样的效果。
sysuse nlsw88.dta,cleardsreturn list这样就可以获取变量啦,方便我们下一步提取!

第二步,将返回值读入Stata,并使用split把每一个变量分割开来。样,all_variable2、all_variable3和all_variable6下面即对应第2、3、6个变量的名称。
clearset obs 1gen all_variable = "`r(varlist)'"split all_variable,p(" ")第三步,将其放入局部宏中,并重新读入数据并保留相关变量。局部宏的格式:local 宏名称 “宏内容”。
local variableX = all_variable2[1]local variableY = all_variable3[1]local variableZ = all_variable6[1]sysuse nlsw88.dta,clearkeep `variableX' `variableY' `variableZ'

由此,我们可以最终只保留数据中的第2、第3和第6个变量,达到了我们最终的目的,只留下我们想要的三个变量 age、race与grade这三个变量。当然这只是其中一种方法,我们还可以想到哪些方法呢?接着来看吧!

二、利用宏扩展函数word # of string

在第一种方法中,我们在获取想要的这三个变量名时,是将返回值读入了Stata,这就覆盖掉了原来的数据,后边保留相关变量时需要重新读入数据。接下来,我们要使用一种方法,可以直接得到想要的变量名。这就是宏扩展函数word # of string

clear allsysuse nlsw88.dta,cleardsreturn list

依然是先将nlsw88.dta数据中所有的变量名称保存在返回值“r(varlist)”中。

local varX: word 2 of `r(varlist)' local varY: word 3 of `r(varlist)'local varZ: word 6 of `r(varlist)'

word # of string的意思 是返回第#个字符串。例如local varX:word 2 of `r(varlist)’表示将返回值 “r(varlist)” 中第2个以空格分隔的字符串放入局部宏varX中,也就是变量age。同理,变量race与grade也可以同样的方法放入局部宏。

di "`varX'"di "`varY'"di "`varZ'"keep `varX' `varY' `varZ'

与第一种方法相对比,使用宏扩展函数更加直观。

三、使用字符串函数word(s,n)

与宏扩展函数类似,我们也可以使用字符串函数word(s,n),它表示返回s的第n个字符。举一个简单的例子:word("abcdefg",4) = d。接下来,我们再尝试用这个字符串函数去留下我们想要的三个变量。

clear allsysuse nlsw88.dta,cleardsreturn listlocal varX = word("`r(varlist)'",2)local varY = word("`r(varlist)'",3)local varZ = word("`r(varlist)'",6)keep `varX' `varY' `varZ'

同样,在使用局部宏提取了想要的变量后,用keep保留即可。

好啦,今天的三种保留变量的方法就教给大家啦,如果各位小伙伴觉得有帮助的话,可以点赞加关注哦!

End

最后,我们为大家揭秘雪球网(https://xueqiu.com/) 最新所展示的沪深证券和港股关注人数增长Top10。




腾讯课堂课程二维码





 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!














往期推文推荐

Python:朋友圈配图,我承包了

绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于selenium爬取美团评论

 双标的莱万——足球无关政治?!

 Stata处理重复值:duplicates

It's time to send a flower to your lover!        2021各省GDP新鲜出炉

 爬虫实战-采集全国各省疫情数据

 log——为你的操作保驾护航

 一行代码教你玩转emoji

 票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

 过年啦,用Python绘制一幅属于你的春联吧!

       登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅

       【基础篇】查找并输出子字符串的定位

        Stata中的小清新命令——添加观测值

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

       Python与数据库交互——窗口函数

        Stata之post命令——数据邮递 

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存